home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
fdimg
/
—‹Œêsrc.lzh
/
cut.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-04
|
18KB
|
856 lines
#include "3DDEF.H"
#include "GLOBAL.H"
#include "FORWARD.H"
#include "XCODE.H"
/* 禁則処理をして切り出す */
/* s1 -> s2(切り出し)+ s3(余り)s1 == s3 でもOK */
/* 余りの長さを返す */
int
cut_line(STR s1,STR s2,STR s3,int jizu)
{
#if 1
#asm
movem.l a3-a5,-(sp)
move.l 16(sp),a4 *s1
move.l 20(sp),a3 *s2
move.l 24(sp),a5 *s3
move.l 28(sp),a0 *jizu
move.l a0,-(sp) *push jizu
pea -3(a0) *push jizu-3
move.l a4,-(sp) *push s1
jsr _cut_line0
lea 12(sp),sp *clear stack
* i = cut_line0(s1,jizu-3,jizu);
*正確には strncpy ではない(EOSをチェックしてない)
tst d0
beq cut_line_l1
* d0 != 0 である
subq.l #1,d0
ctloop1:
move.b (a4)+,(a3)+ *s2 -> s1
dbra d0,ctloop1
* move.l d4,-(sp) *push i
* move.l a4,-(sp) *push s1
* move.l a3,-(sp) *push s2
* jsr _strncpy
* strncpy(s2,s1,i);
cut_line_l1:
clr.b (a3)
* clr.b (a3,d4.l) *s2+i <- 0
* s2[i] = EOS;
moveq.l #-1,d0
* *strcpy だぞ、ついでに長さも数えてるぞ
ctloop2:
addq.l #1,d0 *EOS も含めたバイト数をかぞえてる
move.b (a4)+,(a5)+
bne ctloop2
* pea (a4,d4.l) *push s1+i
* move.l a5,-(sp) *push s3
* jsr _strcpy
* strcpy(s3,&s1[i]);
* move.l a5,-(sp) *push s3
* jsr _strlen
* return(strlen(s3));
* addq.w #4,sp
movem.l (sp)+,a3-a5
rts
#endasm
#else
register int i;
i = cut_line0(s1,jizu-3,jizu);
strncpy(s2,s1,i);
strcpy(s3,&s1[i]);
s2[i] = EOS;
return(strlen(s3));
#endif
}
/* 禁則処理した場合のバイト数を返す */
int
cut_line0(STR s1,int jizu0,int jizu)
{
register int dl,i;
int i0,i00;
register UINT d0,d1;
register UBYTE c1,c2;
/* i = バイトカウンタ */
/* dl = 幅 */
for(dl = i = 0;dl < jizu0;) {
if (c1 = s1[i]) { /* EOS ではない */
if (c1 == XCODE_UP) {
i++;
if (!(c1 = s1[i])) {
return(i);
}
i++;
/* c1 を見て、ルビならさらに進める */
if ((XCODE_RB10 <= c1) && (c1 <= XCODE_RB2)) { /* ルビだ */
i += 2;
if (c1 == XCODE_RB2) {
i += 2;
}
} else {
}
continue; /* ループトップへ */
}
i++;dl++;
if (iskanji(c1)) { /* 漢字の1バイト目? */
c2 = s1[i];
if (!c2) {
return(i-1);
}
i++;dl++;
continue;
}
if (buff_ishan2byte(c1)) { /* 2バイト半角文字 */
i++;
continue;
}
if (c1 == TAB) { /* TAB */
/* 0-7 -> 8, 8-15 -> 16... であるが、 */
/* すでに1を足してあるので、1-8 -> 8, 9-16 -> 16... */
dl += CUT_GETA;
dl += TAB_LENGTH_1;
dl -= (dl % TAB_LENGTH);
dl -= CUT_GETA;
continue;
}
if (c1 == CR) { /* 改行 */
return(i); /* 抜ける */
}
if (c1 < '\x20') { /* コントロールコード */
dl++;
continue;
}
} else { /* EOS である */
return(i); /* 抜ける */
}
}
while(1) {
i0 = i;
if (!(d0 = cut_get1(s1,&i0))) { /* EOS である */
return(i);
}
if (d0 == CR) {
return(i0); /* CR も送り込む */
}
i00 = i0;
d1 = cut_get2(s1,&i00);
switch(dl-jizu) {
case -3: /* 次が行末禁止の全角で、かつ、さらにその次がはみだし不可能な全角 */
if (cut_is_zen(d0) && cut_matu_kin(d0) && !cut_hami_ok(d1) && cut_is_zen(d1)) {
return(i); /* 抜ける */
}
break;
case -2: /* 次が行末禁止の全角 */
/*printf("%d\n",cut_is_zen(d0));*/
/*printf("%d\n",cut_matu_kin(d0));getchar();*/
if (cut_is_zen(d0) && cut_matu_kin(d0)) {
return(i); /* 抜ける */
}
/* 次が行末禁止の半角で、かつ、さらにその次が全角 */
if (cut_is_han(d0) && cut_matu_kin(d0) && cut_is_zen(d1)) {
return(i); /* 抜ける */
}
/* 次が行末禁止の半角で、かつ、さらにその次が行末禁止の半角 */
if (cut_is_han(d0) && cut_matu_kin(d0) && cut_is_han(d1) && cut_matu_kin(d1)) {
return(i); /* 抜ける */
}
break;
case -1: /* 次がはみだし不可能な全角 */
if (cut_is_zen(d0) && !cut_hami_ok(d0)) {
return(i); /* 抜ける */
}
/* 次が行末禁止の半角 */
if (cut_is_han(d0) && cut_matu_kin(d0)) {
return(i); /* 抜ける */
}
break;
case 0: /* 次がはみだし不可能な文字 */
case 1:
case 2:
if (!cut_hami_ok(d0)) {
return(i); /* 抜ける */
}
break;
case 3: /* 次が改行でない */
if (d0 != CR) {
return(i); /* 抜ける */
}
break;
default:
#if 0
if (!cut_hami_ok(d0)) {
return(i); /* 抜ける */
} else if ((dl-jizu) < TAB_LENGTH) {
break;
/* TAB があるのでここまでくる可能性がある */
}
#endif
return(i); /* 抜ける */
}
i = i0;
if (cut_is_zen(d0)) { /* 普通の全角文字 */
dl += 2;
} else if (buff_ishan2byte(d0 >> 8)) { /* 2バイト半角文字 */
dl++;
} else { /* 1バイト文字 */
if (d0 == TAB) { /* TAB */
/* 0-7 -> 8, 8-15 -> 16... である */
dl += CUT_GETA;
dl += TAB_LENGTH;
dl -= dl % TAB_LENGTH;
dl -= CUT_GETA;
#if 0
if ((dl -= dl % TAB_LENGTH) >= jizu) {
return(i); /* 抜ける */
}
#endif
} else if (d0 < '\x20') {
dl += 2;
} else {
dl++;
}
}
}
}
/* c をすすめる */
UINT
cut_get1(STR s,int *c)
{
register STR wp;
register UINT d;
wp = line_skip_xcode(&s[*c]); /* 実体のアドレスを得る */
if (etc_char_byte_haba(wp) <= 1) {
*c = (wp+1)-s;
return(*wp);
} else {
d = *wp++;
*c = (wp+1)-s;
return(d << 8 | *wp);
}
}
UINT
cut_get2(STR s,int *c)
{
if (*s) {
return(cut_get1(s,c));
} else {
return(0);
}
}
int
cut_is_zen(UINT c)
{
if (c >= 0x100) {
c >>= 8;
}
return(iskanji(c));
}
int
cut_is_han(UINT c)
{
if (c >= 0x100) {
c >>= 8;
}
return(!iskanji(c));
}
/* 行末で、はみだしてもよい2バイト文字 SW 差し換え用 */
UWORD byte2_hami_ok_list0[] = {
L'、',L'。',L',',L'.',L'・',L'?',L'!',L'゛',L'゜',L'´',L'`',L'…',L'‥',
L'’',L'”',L')',L'〕',L']',L'}',L'〉',L'》',L'」',L'』',L'】',L'>',
L'°',L'′',L'″',
L'≫'
/*L'ぁ',L'ぃ',L'ぅ',L'ぇ',L'ぉ',L'っ',*/
/*L'ゃ',L'ゅ',L'ょ',L'ゎ',*/
/*L'ァ',L'ィ',L'ゥ',L'ェ',L'ォ',L'ッ',*/
/*L'ャ',L'ュ',L'ョ',L'ヮ',L'ヵ',L'ヶ',*/,0xffff};
UBYTE byte1_hami_ok_list0[] = {
'\n','!','\'',')',',','.','>','?',']','}',
'。','」','、','・'/*'ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','ッ'*/,'゙','゚',0xff};
/* 行末で、はみだしてもよい2バイト文字 */
UWORD byte2_hami_ok_list[] = {
0x80a7,0x80a8,0x80a9,0x80aa,0x80ab,0x80ac,0x80ad,0x80ae,0x80af,
L'、',L'。',L',',L'.',L'・',L'?',L'!',L'゛',L'゜',L'´',L'`',L'…',L'‥',
L'’',L'”',L')',L'〕',L']',L'}',L'〉',L'》',L'」',L'』',L'】',L'>',
L'°',L'′',L'″',
L'≫',
L'ぁ',L'ぃ',L'ぅ',L'ぇ',L'ぉ',L'っ',
L'ゃ',L'ゅ',L'ょ',L'ゎ',
L'ァ',L'ィ',L'ゥ',L'ェ',L'ォ',L'ッ',
L'ャ',L'ュ',L'ョ',L'ヮ',L'ヵ',L'ヶ',0xffff};
UBYTE byte1_hami_ok_list[] = {
'\n','!','\'',')',',','.','>','?',']','}',
'。','」','、','・','ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','ッ','゙','゚',0xff};
UWORD byte2_matu_kin_list[] = {
L'‘',L'“',L'(',L'〔',L'[',L'{',L'〈',L'《',L'「',L'『',L'【',L'<',L'≪',0xffff};
UBYTE byte1_matu_kin_list[] = {
'(','<','[','{','「',0xff};
void
cut_switch_change()
{
register int i;
i = 0;
while((byte2_hami_ok_list[i] = byte2_hami_ok_list0[i]) != 0xffff) {
i++;
}
i = 0;
while((byte1_hami_ok_list[i] =byte1_hami_ok_list0[i]) != 0xff) {
i++;
}
}
int
cut_hami_ok(UINT c)
{
if (string_1or2_byte_code(c)-1) {
register UWORD *p = byte2_hami_ok_list;
for(;*p <= c;p++) {
if (*p == c) return(1);
}
return(0);
} else {
register UBYTE *p = byte1_hami_ok_list;
for(;*p <= c;p++) {
if (*p == c) return(1);
}
return(0);
}
}
int
cut_matu_kin(UINT c)
{
/*printf("%x\n",c);getchar();*/
/*printf("%x\n",string_1or2_byte_code(c));getchar();*/
if (string_1or2_byte_code(c)-1) {
register UWORD *p = byte2_matu_kin_list;
for(;*p <= c;p++) {
/*printf("%x\n",*p);*/
if (*p == c) return(1);
}
return(0);
} else {
register UBYTE *p = byte1_matu_kin_list;
for(;*p <= c;p++) {
/*printf("%x\n",*p);*/
if (*p == c) return(1);
}
return(0);
}
}
/* 禁則処理をして切り出す */
/* s0 + s00 -> s2(切り出し)+ s3(余り)s0 == s30 でもOK */
/* 返り値:-1 = s00 から s0 へ前送りがあった(s0 < s2) */
/* 0 = 前送りも後送りも無かった(s0 == s2) */
/* 1 = s0 から s00 へ後送りがあった(s0 > s2) */
int
cut_2line_link_check(STR s0,STR s00,STR s2,STR s3,int jizu)
{
UBYTE s1[VERY_LONG_LINE*8];
int s0l,s00l;
s0l = strlen(s0);
s00l = strlen(s00);
strcpy(s1,s0);
strcat(s1,s00);
cut_line(s1,s2,s3,jizu);
if (s00l) {
return(s0l - strlen(s2));
} else {
if (s0l == strlen(s2)) {
if (etc_last(s2) == CR) {
return(0);
} else {
return(-1);
}
} else {
return(1);
}
}
}
/* ゲタなしで */
/* 文字列を表現型に変換する */
/* 表示した時の半角スペース数 */
void
cut_disp_convert(STR s,STR dd,int jj)
{
#asm
XCODE_UP equ $0ff * 拡張コードの開始
XCODE_MARK equ $020 * マーク 0x20 - 0x29
XCODE_SYSMARK equ $030 * システムマーク 0x30 - 0x3f
XCODE_MARKLAST equ $03f * マークの最後
XCODE_UL equ $040 * 下線
XCODE_RB10 equ $050 * 予約:1文字真ん中ルビ
XCODE_RB1 equ $051 * 1文字ルビ(半角用)
XCODE_RB1L equ $052 * 1文字ルビ左(全角用)
XCODE_RB1R equ $053 * 1文字ルビ右(全角用)
XCODE_RB2 equ $054 * 2文字ルビ(全角用)
movem.l d1-d5/a0-a1,sdl_save
move.l _CUT_GETA,d0
* d0 returns disp length
move.w _TAB_VIEW,d3
* TAB FLAG
move.l 4(sp),a0
* a0 = pointer to string
move.l 8(sp),a1
* a1 = pointer to store
move.l 12(sp),d5
* d5 = jizume
USERL16:
move.b (a0)+,d1 * 1 byte move
bmi USERL40 * 2 byte code check
beq USERL30 * eof then return
addq.l #1,d0 * anyway add 1(XCODE ではないから)
cmp.b #$20,d1 * control code ?
blt USERL16_1 * normal 1 byte code($20 - $7f)
move.b d1,(a1)+
bra USERL16
USERL16_1:
cmp.b #'I'-'@',d1 * TAB
bne USERL17
*0-7 -> 8, 8-15 -> 16...
*already add 1 then 1-8 -> 8, 9-16 -> 16...
move.l d0,d4
* TAB 処理用に保存
add.w _TAB_LENGTH_1,d0
* d0 から d0 mod TAB_LENGTH を引く
move.l d0,d2 * コピー
divu.w _TAB_LENGTH,d2
swap d2
sub.w d2,d0
* d0 OK
move.l d0,d2
sub.l d4,d2
* d2+1 が進んだ桁数
tst.w d3
bne USERL_TAB_VIEW
* 見えないタブ
U_T_LOOP1:
move.b #' ',(a1)+
dbra d2,U_T_LOOP1
cmp.w d0,d5
* TAB 処理中に字詰めを越えたか?
bgt USERL16 * 達してない
move.l d0,d1 * d1 = WORK
sub.w d5,d1
suba.w d1,a1
move.b #0,(a1)
move.l d5,d0
bra USERL16
USERL_TAB_VIEW:
* 見えるタブ
move.b #$80,(a1)+
move.b #$1c,(a1)+
* 半角右矢印
subq.l #1,d2
blt USERL16
U_T_LOOP2:
move.b #$80,(a1)+
move.b #$a5,(a1)+
* 半角中グロ
dbra d2,U_T_LOOP2
cmp.w d0,d5
* TAB 処理中に字詰めを越えたか?
bgt USERL16 * 達してない
move.l d0,d1 * d1 = WORK
sub.w d5,d1
add.l d1,d1
* d1 を2倍にする
suba.w d1,a1
move.b #0,(a1)
move.l d5,d0
bra USERL16
USERL17
cmp.b #'J'-'@',d1 * CR
bne USERL18
* addq.l #1,d0 * CR is 2 disp_length
move.b _KAIGYOU_HIGH,(a1)+
move.b _KAIGYOU_LOW,(a1)+
bra USERL30 * finish
USERL18
addq.l #1,d0 * control code is 2 disp_length
move.b #'^',(a1)+
add.b #'@',d1
move.b d1,(a1)+ * '^?' を転送
bra USERL16
USERL40: * 2 byte code check
cmp.b #$ff,d1 * xcode ?
bne USERL405 * not xcode
move.b (a0)+,d1 * get next byte
cmp.b #XCODE_UL,d1 * 2 byte xcode ?
ble USERL16 * loop again
cmp.b #XCODE_RB1R,d1 * ....
bgt USERL403
addq.l #2,a0 * 1 char RUBI
bra USERL16
USERL403: * 2 char RUBI
addq.l #4,a0
bra USERL16
USERL405: * not xcode
move.b d1,(a1)+ * 実体は必ずある
addq.l #1,d0 * anyway add 1
cmp.b #$a0,d1
blt USERL41 * $a0 未満である
cmp.b #$e0,d1
blt USERL16 * normal katakana -> next
move.b (a0)+,(a1)+ * next byte move
beq USERL30 * funny byte but end
cmp.b #$f0,d1 * 1/4 kaku ?
bge USERL16
addq.l #1,d0 * normal zenkaku(block 2)
bra USERL16
USERL41:
move.b (a0)+,(a1)+ * next byte move
beq USERL30
cmp.b #$80,d1 * hankaku hiragana ?
beq USERL16
addq.l #1,d0 * normal zenkaku(block 1)
bra USERL16
USERL30:
move.b #0,(a1) * set eof
movem.l sdl_save,d1-d5/a0-a1
rts
.data
.even
sdl_save
ds.l 7
#endasm
}
#if 0
/* ゲタなしで */
/* 文字列を表現型に変換する */
void
cut_disp_convert(STR s,STR dd,int jj)
{
int d00 = - CUT_GETA; /* TAB 処理のために覚えておく */
register UBYTE c;
register int ll = 0;
while(1) {
if ((c = *s++) >= (UBYTE)'\x20') {
if (isprkana(c)) { /* 普通の1バイトコード */
*dd++ = c;
ll++;
} else { /* 2バイトコード:もしくは拡張 */
if (c == XCODE_UP) {
switch(*s++) {
case XCODE_MARK+0:
case XCODE_MARK+1:
case XCODE_MARK+2:
case XCODE_MARK+3:
case XCODE_MARK+4:
case XCODE_MARK+5:
case XCODE_MARK+6:
case XCODE_MARK+7:
case XCODE_MARK+8:
case XCODE_MARK+9: /* マーク 0x20 - 0x29 */
case XCODE_MARK+10:
case XCODE_MARK+11:
case XCODE_MARK+12:
case XCODE_MARK+13:
case XCODE_MARK+14:
case XCODE_MARK+15:
case XCODE_SYSMARK+0: /* システムマーク */
case XCODE_SYSMARK+1:
case XCODE_SYSMARK+2:
case XCODE_SYSMARK+3:
case XCODE_SYSMARK+4:
case XCODE_SYSMARK+5:
case XCODE_SYSMARK+6:
case XCODE_SYSMARK+7:
case XCODE_SYSMARK+8:
case XCODE_SYSMARK+9:
case XCODE_SYSMARK+10:
case XCODE_SYSMARK+11:
case XCODE_SYSMARK+12:
case XCODE_SYSMARK+13:
case XCODE_SYSMARK+14:
case XCODE_SYSMARK+15:
break;
case XCODE_UL: /* 下線 */
break;
case XCODE_RB10: /* 予約:1文字真ん中ルビ */
case XCODE_RB1: /* 1文字ルビ */
case XCODE_RB1L: /* 1文字ルビ左(全角用) */
case XCODE_RB1R: /* 1文字ルビ右(全角用) */
s += 2; /* ルビであるから、2バイト文字 */
break;
case XCODE_RB2: /* 2文字ルビ(全角用) */
s += 4; /* ルビであるから、2バイト文字 */
}
} else { /* 2バイトコードである */
*dd++ = c;
*dd++ = *s++;
}
}
continue;
}
if (c) {
if (c == TAB) { /* TAB */
/* 0-7 -> 8, 8-15 -> 16 */
if (TAB_VIEW) {
*d++ = (UBYTE) '\x80';
*d++ = (UBYTE) '\x1c'; /* 半角右矢印 */
while(((d-d0)%TAB_LENGTH) && ((d-d0)<CURRENT_JIZUME)) {
*d++ = (UBYTE) '\x80';
*d++ = (UBYTE) '\xa5'; /* 半角中グロ */
}
} else {
do {
*d++ = (UBYTE) '\x20';
} while(((d-d0)%TAB_LENGTH) && ((d-d0)<CURRENT_JIZUME));
}
} else if (c == CR) { /* 改行 */
*d++ = KAIGYOU_HIGH;
*d++ = KAIGYOU_LOW;
*d++ = EOS;
break;
} else { /* 普通のコントロールコード */
*d++ = '^';
*d++ = c + '@';
}
} else {
*d = EOS;
break; /* EOS で終わり */
}
}
}
#endif
int
cut_ul_convert(STR s,STR d,int jj)
{
register UBYTE c;
register int l,i;
int flag;
STR d00;
flag = 0;
*d = EOS;
d00 = d;
while(*s) {
if (*s == XCODE_UP) {
s++;
if ((c = *s++) == XCODE_UL) { /* 下線 */
register STR d0,s0;
flag = 1;
s0 = s;
s = line_skip_xcode(s); /* もしもあるとしたら属性を越える */
c = *s; /* 実体だ */
s += 1 + !(etc_check_char_kind_1byte(c) & 0b000010011);
if (c == TAB) { /* TAB:0-7 -> 8, 8-15 -> 16 */
d0 = d;
d0 += TAB_LENGTH;
d0 -= (d0 - d00) % TAB_LENGTH;
l = d0 - d;
} else {
l = etc_char_disp_len(c); /* 幅を得る */
}
for(i=0;i<l;i++) {
*d++ = '~';
}
} else { /* XCODE だが下線ではない */
switch(c) {
case XCODE_RB10: /* 予約:1文字真ん中ルビ */
case XCODE_RB1: /* 1文字ルビ */
case XCODE_RB1L: /* 1文字ルビ左(全角用) */
case XCODE_RB1R: /* 1文字ルビ右(全角用) */
s += 2; /* ルビであるから、2バイト文字 */
break;
case XCODE_RB2: /* 2文字ルビ(全角用) */
s += 4; /* ルビであるから、2バイト文字 */
break;
}
}
} else { /* XCODE ではない */
if ((c = *s) == CR) {
break;
}
/* 実体だ */
s += 1 + !(etc_check_char_kind_1byte(c) & 0b000010011);
if (c == TAB) {
*d++ = c;
} else {
l = etc_char_disp_len(c); /* 幅を得る */
*d++ = ' ';
if (l > 1) {
*d++ = ' ';
}
}
}
}
*d = EOS;
if (flag) {
register STR p;
p = d+strlen(d)-1;
while(*p == ' ') {
*p-- = EOS;
}
}
return(flag);
}
int
cut_rubi_convert(STR s,STR d,int jj)
{
register UBYTE c;
int flag,rubi_done_flag;
rubi_done_flag = flag = 0;
*d = EOS;
while(*s) {
if (*s == XCODE_UP) {
s++;
switch (c = *s++) {
case XCODE_RB10: /* 予約:1文字真ん中ルビ */
case XCODE_RB1L: /* 1文字ルビ左(全角用) */
*d++ = cut_rubi_convert_to_low(*s++);
*d++ = *s++;
*d++ = ' ';
break;
case XCODE_RB1: /* 1文字ルビ */
*d++ = cut_rubi_convert_to_low(*s++);
*d++ = *s++;
break;
case XCODE_RB1R: /* 1文字ルビ右(全角用) */
*d++ = ' ';
*d++ = cut_rubi_convert_to_low(*s++);
*d++ = *s++;
break;
case XCODE_RB2: /* 2文字ルビ(全角用) */
*d++ = cut_rubi_convert_to_low(*s++);
*d++ = *s++;
*d++ = cut_rubi_convert_to_low(*s++);
*d++ = *s++;
break;
default: /* ,,, */
continue;
break;
}
flag = rubi_done_flag = 1;
if ((c = *s) == XCODE_UP) {
continue;
}
} else { /* XCODE ではない */
if ((c = *s) == CR) {
break;
}
/* 実体だ */
s += 1 + !(etc_check_char_kind_1byte(c) & 0b000010011);/* 1バイト物か? */
if (rubi_done_flag) { /* 既に d は送ってある */
rubi_done_flag = 0;
continue;
}
if (c == TAB) {
*d++ = c;
} else {
register int l;
l = etc_char_disp_len(c); /* 幅を得る */
*d++ = ' ';
if (l > 1) {
*d++ = ' ';
}
}
}
}
*d = EOS;
if (flag) {
register STR p;
p = d+strlen(d)-1;
while(*p == ' ') {
*p-- = EOS; /* 後ろから削る */
}
}
return(flag);
}
UBYTE
cut_rubi_convert_to_low(UBYTE c)
{
if (c == 0xf0) {
return(0xf2);
} else if (c == 0xf1) {
return(0xf3);
}
return(c);
}